home *** CD-ROM | disk | FTP | other *** search
- /*************************** hashing-bool-ops.h *****************************
-
- Purpose: External declarations for boolean operations implemented
- using hashing.
-
- Provenance: Written and tested by S. Wartik, April 1991.
-
- Notes: None.
-
- **/
-
- #ifndef TRUE
- # define TRUE 1
- # define FALSE 0
- typedef int boolean;
- #endif
-
- typedef int elementType; /* This could be any valid type. */
-
- typedef struct be_str { /* A link in the chain from a bucket. */
- elementType datum; /* Implemented as a linked list. */
- struct be_str *next_datum;
- } bucket_element;
-
- typedef struct { /* A hashing-based set implementation. */
- int Number_Of_Buckets;
- bucket_element **buckets;
- int (*hashing_function)(); /* The set's hashing function. */
- boolean (*comparator)(); /* A tester for element equality. */
- } set;
-
- #ifdef __STDC__
-
- extern void Create(int Number_Of_Buckets,
- int (*Hashing_Function)(),
- boolean (*Comparator)(),
- set *s);
-
- extern void Clear(set *s);
- extern void Insert(set *s, elementType e);
- extern void Delete(set *s, elementType e);
-
- extern void Unite(set *s1, set *s2, set *s3);
- extern void Intersect(set *s1, set *s2, set *s3);
- extern void Subtract(set *s1, set *s2, set *s3);
-
- extern boolean Empty(set *s);
- extern boolean Member(set *s, elementType e);
-
- extern void Copy(set *source, set *destination);
-
- extern void Iterate(set *s, boolean (*f)());
-
- boolean Error_Occurred();
-
- #else
-
- extern void Create(); /* Create a set. */
-
- extern void Clear(); /* Make a set contain zero elements. */
- extern void Insert(); /* Insert an element into a set. */
- extern void Delete(); /* Remove an element from a set. */
-
- extern void Unite(); /* Form the union of two sets. */
- extern void Intersect(); /* Form the intersection of two sets. */
- extern void Subtract(); /* Form the difference of two sets. */
-
- extern boolean Empty(); /* Return TRUE iff a set has zero elements. */
- extern boolean Member(); /* Return TRUE iff a specified value is */
- /* a member of a set. */
-
- extern void Copy(); /* Make a copy of a set. */
-
- extern void Iterate(); /* Invoke a function on every element *
- /* in a set. */
-
- extern boolean Error_Occurred(); /* Return TRUE iff the last */
- /* operation caused an error. */
- #endif
-